// 给定一个字符串，验证它是否是回文串，只考虑字母和数字字符，可以忽略字母的大小写。
// 说明：本题中，我们将空字符串定义为有效的回文串。

function isPalindrome(s: string): boolean {
    // 安全检测
    if (s.length < 1) {
        return true;
    }
    s = s.replace(/[^0-9a-zA-Z]/g, '').toLowerCase();// 正则提取出字符串的部分
    let left: number = 0;// 声明左指针
    let right: number = s.length - 1;// 声明右指针
    // 指针滑动判断
    while (left < right) {
        if (s[left] != s[right]) return false;
        left++;
        right--;
    }
    return true;
};

// 这道题目对JS系的语言来说就非常简单了
// 首先可以用一个正则表达式提取出符合题意得字母部分
// 之后采取常规的双指针法求解即可
// （这里要注意一下，要先提取字符，再声明指针，顺序不能错）